Regular Expressions (রেগুলার এক্সপ্রেশন বা Regex) রুবি প্রোগ্রামিং ভাষায় একটি শক্তিশালী টুল, যা বিশেষ করে টেক্সট ডেটা ম্যানিপুলেশন এবং ডেটা খোঁজার জন্য ব্যবহৃত হয়। Pattern Matching বা প্যাটার্ন ম্যাচিং হল একটি প্রক্রিয়া যা রেগুলার এক্সপ্রেশনের মাধ্যমে একটি নির্দিষ্ট প্যাটার্ন বা শর্ত অনুসারে টেক্সট খুঁজে বের করে। এটি রুবি সহ বিভিন্ন প্রোগ্রামিং ভাষায় ব্যবহৃত হয়।
১. Regular Expressions (Regex) এর ধারণা
Regex হল একটি বিশেষ ধরণের স্ট্রিং যা এক বা একাধিক চরিত্রের প্যাটার্ন উপস্থাপন করে। এটি টেক্সট ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে এবং সেই প্যাটার্নের ভিত্তিতে কাজ করতে ব্যবহৃত হয়।
রেগুলার এক্সপ্রেশন সাধারণত ওয়েব ডেভেলপমেন্ট, ডেটা সায়েন্স, ফাইল প্রসেসিং, এবং অন্যান্য টেক্সট-বেসড অপারেশনে ব্যবহৃত হয়।
২. Regex এর Syntax (বুনিয়াদি সিনট্যাক্স)
রেগুলার এক্সপ্রেশন টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করার জন্য নির্দিষ্ট সিনট্যাক্স বা প্যাটার্ন ব্যবহার করে। এখানে কিছু সাধারণ সিনট্যাক্স দেয়া হলো:
২.১ Character classes (ক্যারেক্টার ক্লাস)
.: যেকোনো একক চরিত্র।- উদাহরণ:
a.c-> এটিabc,adc,axcইত্যাদি মেলাবে।
- উদাহরণ:
[abc]:a,b, অথবাcএর মধ্যে যেকোনো একটি।- উদাহরণ:
[a-z]-> এটি যেকোনো একটি ছোট হাতের অক্ষর মেলাবে।
- উদাহরণ:
[^abc]:a,b, বাcছাড়া অন্য কিছু।- উদাহরণ:
[^0-9]-> এটি যেকোনো সংখ্যা ছাড়া অন্য কিছু মেলাবে।
- উদাহরণ:
২.২ Anchors (অ্যাঙ্কর)
^: লাইন বা স্ট্রিংয়ের শুরু।- উদাহরণ:
^abc-> এটি শুধুমাত্র এমন স্ট্রিং মেলাবে যাabcদিয়ে শুরু হয়।
- উদাহরণ:
$: লাইন বা স্ট্রিংয়ের শেষ।- উদাহরণ:
abc$-> এটি শুধুমাত্র এমন স্ট্রিং মেলাবে যাabcদিয়ে শেষ হয়।
- উদাহরণ:
২.৩ Quantifiers (কোয়ানটিফায়ার)
*: পূর্ববর্তী ক্যারেক্টারটি ০ বা তার বেশি বার হতে পারে।- উদাহরণ:
a*b-> এটিb,ab,aab,aaabইত্যাদি মেলাবে।
- উদাহরণ:
+: পূর্ববর্তী ক্যারেক্টারটি ১ বা তার বেশি বার হতে হবে।- উদাহরণ:
a+b-> এটিab,aab,aaabইত্যাদি মেলাবে কিন্তু শুধুbনয়।
- উদাহরণ:
?: পূর্ববর্তী ক্যারেক্টারটি ০ বা ১ বার হতে পারে।- উদাহরণ:
a?b-> এটিbবাabমেলাবে।
- উদাহরণ:
২.৪ Groups and Alternation (গ্রুপিং এবং বিকল্প)
(): গ্রুপিং (Sub-expression) তৈরি করতে ব্যবহৃত হয়।- উদাহরণ:
(abc)+-> এটি একটি বা একাধিকabcমেলাবে।
- উদাহরণ:
|: বিকল্প (OR) পছন্দ।- উদাহরণ:
abc|def-> এটিabcঅথবাdefমেলাবে।
- উদাহরণ:
৩. Pattern Matching in Ruby
রুবিতে Pattern Matching রেগুলার এক্সপ্রেশন ব্যবহার করে বিভিন্ন ধরনের ডেটা যাচাই, খোঁজা এবং পরিবর্তন করতে হয়। রেগুলার এক্সপ্রেশনগুলি সাধারণত =~, .match, এবং .scan মেথডের মাধ্যমে ব্যবহার করা হয়।
৩.১ =~ অপারেটর
এটি রেগুলার এক্সপ্রেশন প্যাটার্নকে স্ট্রিংয়ের সাথে তুলনা করে এবং যদি প্যাটার্ন মেলে তবে স্ট্রিংয়ের অবস্থান প্রদান করে, না হলে nil ফেরত দেয়।
str = "Hello, World!"
if str =~ /Hello/
puts "Pattern matched!"
else
puts "No match"
endআউটপুট:
Pattern matched!৩.২ match মেথড
match মেথড রেগুলার এক্সপ্রেশন এবং স্ট্রিংয়ের মধ্যে মিল খুঁজে বের করতে ব্যবহৃত হয়। এটি একটি MatchData অবজেক্ট ফেরত দেয়, যেখানে মেলানো প্যাটার্নের বিভিন্ন অংশ পাওয়া যায়।
str = "Hello, World!"
result = str.match(/Hello/)
puts result[0] # Output: Helloএখানে, result[0] মিলানো প্যাটার্নের পূর্ণ অংশ Hello প্রদান করবে।
৩.৩ scan মেথড
scan মেথডটি একটি স্ট্রিংয়ের মধ্যে রেগুলার এক্সপ্রেশন প্যাটার্নের সব ম্যাচ খুঁজে বের করে এবং একটি অ্যারে হিসেবে ফেরত দেয়।
str = "The quick brown fox jumped over the lazy dog."
words = str.scan(/\w+/) # All words
puts words.inspectআউটপুট:
["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]এখানে, .scan(/\w+/) ব্যবহার করে সমস্ত শব্দ খোঁজা হয়েছে।
৪. Replacing Text with Regex
রেগুলার এক্সপ্রেশন ব্যবহার করে আপনি স্ট্রিংয়ে টেক্সট প্রতিস্থাপন (replace) করতে পারেন। রুবির gsub মেথডটি এই কাজটি করে।
str = "Hello, World!"
new_str = str.gsub(/World/, "Ruby")
puts new_str # Output: Hello, Ruby!এখানে, "World" শব্দটি "Ruby" দিয়ে প্রতিস্থাপিত হয়েছে।
৫. Regex with Flags
রেগুলার এক্সপ্রেশন ব্যবহার করার সময় আপনি কিছু flags ব্যবহার করতে পারেন, যা প্যাটার্নের আচরণ নিয়ন্ত্রণ করে। যেমন:
i: বড় হাতের এবং ছোট হাতের অক্ষরের পার্থক্য না রাখে।m: মাল্টি-লাইন স্ট্রিংয়ে প্যাটার্ন মেলাবে।
উদাহরণ:
str = "hello"
puts str =~ /HELLO/i # Output: 0 (Match found, case insensitive)সারসংক্ষেপ
- Regular Expressions (Regex) হল একটি টুল যা টেক্সট ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়।
- Pattern Matching রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খোঁজা এবং কাজ করা হয়।
- রুবিতে
=~,.match, এবং.scanমেথডের মাধ্যমে প্যাটার্ন ম্যাচিং করা যায়। - Regex এর অনেক সুনির্দিষ্ট সিম্বল (যেমন
*,+,?,[],^,$ইত্যাদি) রয়েছে যা প্যাটার্নের সাথে মিল খুঁজে বের করতে সাহায্য করে।
এটি ডেটা খোঁজা, ম্যানিপুলেশন এবং বৈধতা যাচাইয়ের জন্য একটি অত্যন্ত শক্তিশালী টুল।
Read more